SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE Procedure [dbo].[SP_TTPROC_INLO_Q02]      
/*---------------------------------------------------------*/      
/*---Empresa              : OFISIS S.A.                  --*/      
/*---Cliente              : Ofisis                       --*/      
/*---Sistema              : Interfase                    --*/      
/*---M¢dulo               : Empresa                      --*/      
/*---Programa             : Interface Contable log¡stica --*/      
/*---Script               : TTPROC_INLO                  --*/      
/*---Nombre SP            : SP_TTPROC_INLO_Q02           --*/      
/*---Desarrollado por     : Gianmarco Lindo Huertas      --*/      
/*---Fecha Creaci¢n       : 07/08/2001                   --*/      
/*---Base Datos           : Microsoft Sql Server         --*/      
/*---Versi¢n              : 8.0                          --*/      
/*---Invoca a SP          :                              --*/      
/*---------------------------------------------------------*/      
/*---------------------------------------------------------*/      
/*---Modificado 1 por     : Yerald Miyashiro K.          --*/      
/*---Fecha Modificaci¢n   : 27/08/2004                   --*/       
/*---Detalle Modificaci¢n : Setea Monto Contable         --*/      
/*---------------------------------------------------------*/     
/*---- Modificado 2 por     :Augusto Espinoza R.       ----*/    
/*---- Fecha Modificación   : 26/12/2008               ----*/    
/*---- Detalle Modificación : Se inicializo en los     ----*/    
/*---- select de las tablas TMCONV_MONE las variables  ----*/     
/*---- que van a tomar el valor de los campos.Tomando ----*/     
/*---- como referencia los exception en la version     ----*/      
/*---- oracle del procedure                            ----*/    
/*---------------------------------------------------------*/      
/*---Comentarios                                         --*/      
/*--- Determina los Montos Origen y Contables            --*/      
/*--- que ser n insertados en el Voucher                 --*/      
/*---------------------------------------------------------*/      
/*---------------------------------------------------------*/      
/*--- Drop Proc SP_TTPROC_INLO_Q02                       --*/      
/*---Grant all on SP_TTPROC_INLO_Q02 to public           --*/       
/*---SP_TTPROC_INLO_Q02 '01' , 1, 1, '03/01/1999',       --*/      
/*--- '03/31/1999', 'N', 1, 0, 0, NULL , NULL            --*/      
/*---------------------------------------------------------*/      
    
@ISCO_MONE_MOVI   TD_VC_003,        /* Moneda del Movimiento                    */      
@ISCO_MONE_CNTA   TD_VC_003,        /* Moneda de la Cuenta                      */      
@ISCO_MONE_CNTB   TD_VC_003,        /* Moneda de la Contabilidad                */      
@ISCO_MONE_NACI   TD_VC_003,        /* Moneda Nacional                          */      
@IID_MONE         TD_VC_001,        /* Flag que indica si respeta moneda de Cta */      
@INFA_CAMB        TD_NU_015_006,    /* Factor de Conversi¢n                     */      
@INFA_CAMB_BASE   TD_NU_015_006,    /* Factor de Conversi¢n                     */      
@INIM_MOVI        TD_NU_016_004,    /* Importe Movimiento                       */      
@ONIM_MVTO_ORIG   TD_NU_016_004 OUTPUT, /* Importe Movimiento Origen Cuenta Contable*/      
@ONIM_MVTO_CNTB   TD_NU_016_004 OUTPUT, /* Importe Movimiento Contable              */      
@OSCO_MONE_ASTO   TD_VC_003 OUTPUT  /* Moneda Asiento                           */      
    
As      
Begin       
  DECLARE      
  @VSCO_MON1       TD_VC_003,      
  @VSCO_MONE_BAS1  TD_VC_003,      
  @VSTI_OPE1       TD_VC_001,      
  @VSCO_MON2       TD_VC_003,      
  @VSCO_MONE_BAS2  TD_VC_003,      
  @VSTI_OPE2       TD_VC_001      
      
  Select @ONIM_MVTO_ORIG = 0.00      
  Select @ONIM_MVTO_CNTB = 0.00      
      
  -- Setea Moneda Asiento --      
  If @IID_MONE = 'S'      
    Select @OSCO_MONE_ASTO = @ISCO_MONE_CNTA      
  Else      
    Select @OSCO_MONE_ASTO = @ISCO_MONE_MOVI      
  
  -- Setea Monto Origen --      
  If @IID_MONE = 'N' Or @ISCO_MONE_MOVI = @ISCO_MONE_CNTA      
   Select @ONIM_MVTO_ORIG = @INIM_MOVI      
  Else      
  Begin      
      
    ----  Recupero monedas     
    
    SELECT @VSCO_MON1 = '',    
           @VSCO_MONE_BAS1 = '',    
           @VSTI_OPE1 = '',    
           @VSCO_MON2 = '',    
           @VSCO_MONE_BAS2 = '',    
           @VSTI_OPE2 = ''    
     
    Select @VSCO_MON1 = t1.CO_MON1, @VSCO_MONE_BAS1 = t1.CO_MONE_BAS1,      
           @VSTI_OPE1 = t1.TI_OPE1, @VSCO_MON2 = t1.CO_MON2,      
           @VSCO_MONE_BAS2 = t1.CO_MONE_BAS2,@VSTI_OPE2 = TI_OPE2      
    From   OFISEGU.DBO.TMCONV_MONE t1      
    Where  t1.CO_MONE_ORIG   = @ISCO_MONE_MOVI      
    And    t1.CO_MONE_DEST   = @ISCO_MONE_CNTA       
      
    If IsNull(@INFA_CAMB,0) > 0       Begin      
      If @VSTI_OPE1 = 'M'      
        Select @ONIM_MVTO_ORIG  =  @INIM_MOVI * @INFA_CAMB       
      Else      
        Select @ONIM_MVTO_ORIG  =  @INIM_MOVI / @INFA_CAMB      
    End       
    Else      
      Select @ONIM_MVTO_ORIG = 0      
      
    ----- If existe segunda moneda para convertir      
    If Len(Ltrim(IsNull(@VSCO_MON2,''))) > 0 And  IsNull(@ONIM_MVTO_ORIG,0)> 0      
    Begin      
      If IsNull(@INFA_CAMB_BASE,0) > 0      
      Begin      
        If @VSTI_OPE2 = 'M'      
          Select @ONIM_MVTO_ORIG =  @ONIM_MVTO_ORIG * @INFA_CAMB_BASE      
        Else       
          Select @ONIM_MVTO_ORIG =  @ONIM_MVTO_ORIG / @INFA_CAMB_BASE      
      End       
      Else      
        Select @ONIM_MVTO_ORIG = 0      
    End      
        Select @ONIM_MVTO_ORIG  =  ROUND(@ONIM_MVTO_ORIG,2)      
  End      
      
  -- Setea Monto Contable --      
  If @ISCO_MONE_MOVI = @ISCO_MONE_CNTA      
  Begin      
    If @ISCO_MONE_MOVI = @ISCO_MONE_CNTB      
       Select @ONIM_MVTO_CNTB = @INIM_MOVI      
    Else      
    Begin      
      
    ----  Recupero monedas      
  SELECT @VSCO_MON1 = '',    
           @VSCO_MONE_BAS1 = '',    
           @VSTI_OPE1 = '',    
           @VSCO_MON2 = '',    
           @VSCO_MONE_BAS2 = '',    
           @VSTI_OPE2 = ''    
    
    Select @VSCO_MON1 = t1.CO_MON1, @VSCO_MONE_BAS1 = t1.CO_MONE_BAS1,      
           @VSTI_OPE1 = t1.TI_OPE1, @VSCO_MON2 = t1.CO_MON2,      
           @VSCO_MONE_BAS2 = t1.CO_MONE_BAS2,@VSTI_OPE2 = TI_OPE2      
    From   OFISEGU.DBO.TMCONV_MONE t1      
    Where  t1.CO_MONE_ORIG   = @ISCO_MONE_MOVI      
    And    t1.CO_MONE_DEST   = @ISCO_MONE_CNTB       
      
    If IsNull(@INFA_CAMB,0) > 0      
    Begin      
      If @VSTI_OPE1 = 'M'      
        Select @ONIM_MVTO_CNTB  =  @INIM_MOVI * @INFA_CAMB       
      Else      
        Select @ONIM_MVTO_CNTB  =  @INIM_MOVI / @INFA_CAMB      
    End       
    Else      
      Select @ONIM_MVTO_CNTB = 0      
      
    ----- If existe segunda moneda para convertir      
    If Len(Ltrim(IsNull(@VSCO_MON2,''))) > 0 And  IsNull(@ONIM_MVTO_CNTB,0)> 0      
    Begin      
      If IsNull(@INFA_CAMB_BASE,0) > 0      
      Begin      
        If @VSTI_OPE2 = 'M'      
          Select @ONIM_MVTO_CNTB =  @ONIM_MVTO_CNTB * @INFA_CAMB_BASE      
        Else       
   Select @ONIM_MVTO_CNTB =  @ONIM_MVTO_CNTB / @INFA_CAMB_BASE      
      End       
      Else      
   Select @ONIM_MVTO_CNTB = 0      
    End      
        Select @ONIM_MVTO_CNTB  = ROUND(@ONIM_MVTO_CNTB,2)      
    End      
  End      
  Else      
  Begin      
    -- MODIFICADO POR YMK    
        
    If @IID_MONE = 'S'  AND @ISCO_MONE_CNTA = @ISCO_MONE_CNTB      
      Select @ONIM_MVTO_CNTB = @ONIM_MVTO_ORIG      
    Else If @IID_MONE = 'N'  AND @ISCO_MONE_MOVI = @ISCO_MONE_CNTB    
      Select @ONIM_MVTO_CNTB = @ONIM_MVTO_ORIG      
    Else      
    Begin      
      
    ----  Recupero monedas      
    
    SELECT @VSCO_MON1 = '',    
           @VSCO_MONE_BAS1 = '',    
           @VSTI_OPE1 = '',    
           @VSCO_MON2 = '',    
           @VSCO_MONE_BAS2 = '',    
           @VSTI_OPE2 = ''     
    
    Select @VSCO_MON1 = t1.CO_MON1, @VSCO_MONE_BAS1 = t1.CO_MONE_BAS1,      
          @VSTI_OPE1 = t1.TI_OPE1, @VSCO_MON2 = t1.CO_MON2,      
           @VSCO_MONE_BAS2 = t1.CO_MONE_BAS2,@VSTI_OPE2 = TI_OPE2      
    From   OFISEGU.DBO.TMCONV_MONE t1      
    Where  t1.CO_MONE_ORIG   = @ISCO_MONE_MOVI      
    And    t1.CO_MONE_DEST   = @ISCO_MONE_CNTB       
      
    If IsNull(@INFA_CAMB,0) > 0      
    Begin      
      If @VSTI_OPE1 = 'M'      
        Select @ONIM_MVTO_CNTB  =  @ONIM_MVTO_ORIG * @INFA_CAMB       
      Else      
        Select @ONIM_MVTO_CNTB  =  @ONIM_MVTO_ORIG / @INFA_CAMB      
    End       
    Else      
      Select @ONIM_MVTO_CNTB = 0      
      
    ----- If existe segunda moneda para convertir      
    If Len(Ltrim(IsNull(@VSCO_MON2,''))) > 0 And  IsNull(@ONIM_MVTO_CNTB,0)> 0      
    Begin      
      If IsNull(@INFA_CAMB_BASE,0) > 0      
      Begin      
        If @VSTI_OPE2 = 'M'      
          Select @ONIM_MVTO_CNTB =  @ONIM_MVTO_CNTB * @INFA_CAMB_BASE      
        Else       
          Select @ONIM_MVTO_CNTB =  @ONIM_MVTO_CNTB / @INFA_CAMB_BASE      
      End       
      Else      
        Select @ONIM_MVTO_CNTB = 0      
    End      
        Select @ONIM_MVTO_CNTB  = ROUND(@ONIM_MVTO_CNTB,2)      
    End      
  End      
End      
/*------------------------------ Fin -------------------------------*/ 
GO
